#pragma once

//读写锁
class ReadWriteLock
{
public:
	ReadWriteLock();
	~ReadWriteLock();

	void readLock();

	void writeLock();

	void unLock();

private:
	//锁状态值
	int lockStatus;

	//读锁计数
	int readLockCount;

	//读等待锁计数
	int readWaitLockCount;

	//写等待锁计数
	int writeWaitLockCount;

	//通知事件
	HANDLE notifyEvent;

	//每个线程中访问临界资源的那段代码，不论是硬件临界资源，还是软件临界资源，多个线程必须互斥地对它进行访问。
	CRITICAL_SECTION stLock;

	//公共方法
	void common();
};

